コスト配分タグを活用してAmazon ECSクラスターやECSサービス単位の利用料金を把握する方法
はじめに
Amazon ECSのクラスターやECSサービスで起動するタスクにタグを設定することで、タグ単位で利用料金を把握することが可能です。
ECSのコストをタグで管理するには、ECSサービスやECSクラスターではなく、ECSタスクにタグを付与する必要があります。
ECSサービスに対してタグを追加し、さらにタグの伝播を有効化することで、ECSサービスから起動されたタスクにも自動的にタグが付与されます。
なお、タグの伝播はデフォルトでは無効化されているため、手動で有効化する必要があります。
試してみる
すでにECSサービスが作成済みであることを前提とします。
今回は、ECSサービスで起動しているタスクの利用料金を把握できるよう手順を解説します。
既存のECSサービスでタスクにタグを付与する手順は、以下の通りです。
- タスクの起動に使用するECSサービスに対してタグを付与する
- ECSサービスの設定でタグの伝播を有効化し、タスクを再起動する
タグを付与
タスクを起動するECSサービスにタグを付与します。
タグ付けの際、今回は、キー名にCmBillingGroup
を指定します。
CmBillingGroup
タグは、弊社メンバーズのお客様向けに提供しているメンバーズポータルサイトで、AWS利用金額を分析する際に使用するタグ名です。このタグの値をもとに、利用金額を分類します。
タグの伝播
ECSサービスの設定で、タグの伝播を有効化します。
以下のコマンドを実行し、出力結果がNONE
であることを確認することで、タグの伝播が無効化されていることがわかります。
$ aws ecs describe-services \
--cluster クラスター名\
--services サービス名 \
--query 'services[*].propagateTags' \
--output text
NONE
マネジメントコンソール上でもタグの伝播設定を確認できます。
propagateTags
には、以下の3つの値が設定可能です。
NONE
:タグの伝播が無効です。SERVICE
:ECSサービスからタスクにタグを伝播します。TASK_DEFINITION
:タスク定義からタスクにタグを伝播します。
ECSサービスからタスクにタグを伝播するには、以下のコマンドを使用して、--propagate-tags
オプションでSERVICE
を選択し、ECSサービスを更新します。
$ aws ecs update-service \
--cluster クラスター名\
--services サービス名 \
--propagate-tags SERVICE \
--query "service.propagateTags" \
--output text
SERVICE
既存のタスクにはタグが反映されないため、ECSサービスでタスクを強制的にデプロイし、再起動を行います。
起動したタスクに、CmBillingGroup
タグが付与されていることを確認しました。
数日後、弊社メンバーズのメンバーズポータルサイトでAWS利用金額が確認できました。
参考